//################################
// 版权所有：中国农业银行软件开发中心
// 系统名称：移动办公应用-手机版
// 文件名称：modWebView.js
// 创建时间：2016年10月20日
// 创建人员：朱勇
// 功能说明：自适应高度webview公共组件
//################################
'use strict';

import React, {Component} from 'react';
import {
    WebView,
    View,
    Text
} from 'react-native';

class ModWebView extends Component {
    constructor(props) {
        super(props);

        this.state={
            webViewHeight:0,
        };

        this.injectJs=`
            var height=document.documentElement.offsetHeight;
            window.location.hash='#'+height;
        `;

        this.source={};
        this.initHtml(this.props.html,this.props.css);
    }
    
    initHtml(html,css){
        let baseHtml=``;

        if(html){
            html=html.replace(/<a[^<]*>/g,'');
            html=html.replace(/<\/a[^<]*>/g,'');
            html=html.replace(/<img[^<]*>/g,'');
            if(html.indexOf('<body>')>0){
                if(html.indexOf('</body>')>0){
                    baseHtml=html.substring(html.indexOf('<body>')+6,html.indexOf('</body>'));
                }else{
                    baseHtml=html.substring(html.indexOf('<body>')+6,html.length);
                }
            }else{
                if(html.indexOf('</body>')>0){
                    baseHtml=html.substring(0,html.indexOf('</body>'));
                }else{
                    baseHtml=html;
                }
            }
        }
        
        this.htmlFrame= `
        <!DOCTYPE html>\n<html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=320, user-scalable=yes">`;

		if(css){
			this.htmlFrame+=`<style type="text/css">${css}</style>`;
		}
        
        this.htmlFrame+=`
        </head>
        <body>
        ${baseHtml}
        </body>
        </html>
        `;

        this.source={
            html:this.htmlFrame,
        };
    }
    render() {
        return (
            <WebView
                ref={(c) => {this.webview = c}}
                javaScriptEnabled={true}
                source={this.source}
                style={{height:this.state.webViewHeight}}
                injectedJavaScript={this.injectJs}
                onNavigationStateChange={(info)=>{
                    let urlArr=info.url.split("#");
                    if(urlArr.length>1){
                        this.setState({
                            webViewHeight:parseInt(urlArr[1])
                        });
                    }
                }}
            />
        );
    }

}

export default ModWebView;